package net.liteheaven.testfile;

/**
 * 这个可以作为面试题
 *
 * 有很多给外部使用的设备类，如Phone、Tablet，这两个设备类已经交付给用户使用。
 * 现在设备不能满足要求，需要在现有基础增加两个维度：三星和华为。
 * 所有三星设备在powerOn方法调用的时候追加行为System.out.println("Bomb!");
 * 所有三星设备在ring方法调用的时候追加行为System.out.println("Dream is possible!");
 */
public class Test {

    /**
     * 这部分是题目
     */

    public interface IDevice {
        void powerOn();
        void ring();
    }

    public static class Phone implements IDevice {

        @Override
        public void powerOn() {
            System.out.println("Phone is power on.");
        }

        @Override
        public void ring() {
            System.out.println("Phone is ringing.");
        }
    }

    public static class Tablet implements IDevice {

        @Override
        public void powerOn() {
            System.out.println("Tablet is power on.");
        }

        @Override
        public void ring() {
            System.out.println("Tablet is ringing.");
        }
    }

    public static void main(String [] args){
        IDevice phone = new Phone();
        phone.powerOn();
        phone.ring();
        IDevice tablet = new Tablet();
        tablet.powerOn();
        tablet.ring();
    }

    /**
     * 这部分是答案
     */

    public static class SamSung implements IDevice{

        private IDevice device;

        public SamSung(IDevice device){
            this.device = device;
        }

        @Override
        public void powerOn() {
            device.powerOn();
            System.out.println("Bomb!");
        }

        @Override
        public void ring() {
            device.ring();
        }
    }

    public static class HuaWei implements IDevice{

        private IDevice device;

        public HuaWei(IDevice device){
            this.device = device;
        }

        @Override
        public void powerOn() {
            device.powerOn();
            System.out.println("Bomb!");
        }

        @Override
        public void ring() {
            device.ring();
            System.out.println("Dream is possible!");
        }
    }
}
